Gush2をカスタマイズしてカテゴリ別新着記事表示に改造。表示記事と同じカテゴリの新着記事を表示。
ブログなんかで新着記事リスト表示されますが、Gush2を改造し、現在シングル表示している記事と同じカテゴリの新着記事だけでリスト表示できるようにしてみました。
超雑多なブログでは混乱の元?
ご存じのとおり、SiSO-LABは超雑多なブログです。何しろ、日常生活での関心事項を全部ネタにしているような勢いで…。本来ならば、ブログそのものを大きなカテゴリで分けて、SiSO-LAB.netで総合表示するようなサイトにするべきなのですが、まだその領域にSiSOのレベルが到達していません。
数年以内にはなんとかなりそうな気がしているのですが…一応、2014年になってからWordPressとかPHPをいじり始めて、こんなネタも記事にできるようになってきましたし。え?まだまだ遠いですか?
そんなわけで、例えば、iPhoneのネタで当ブログを見つけてくださっても、新着記事リストにアウトドアネタばかり並んでいても「う~ん…」となってしまうのではないかと思います。
これを解消するために、人気記事リストはシングル表示している記事のカテゴリに合わせるようにしたのですが、やはり、新着記事もカテゴリを意識した方がよさそうな気がしています。
そんなわけでGushを改造してみることにしました。
Gushは新着記事表示機能内蔵
今回は、Gush2からカスタマイズしてみました。PHPのコードを見る限り、sidebar.phpにそれほど大きな変化は無いようなので、Gushで同じカスタマイズをするのも簡単です。
当ブログはまだGush2へは移行していませんが、ローカル環境の方でカスタマイズ&テストしています。
Gushでの新着記事(NEW エントリー)表示方法
Gushでは、サイドバーへの新着記事一覧を表示をPHPプログラムにて行っています。これはGush2も同様です。新着記事の一覧を取得するために、WP_Query()という関数を実行しています。これはWordPressの標準関数のようです。
この関数を実行する時に、ハードコーディング(直接、数値などをプログラム中に記載する)によりパラメータとして「posts_per_page」に「10」をセットしています。これにより10件分の新着記事リストを表示しています。
そんなわけで、トップ(ホーム)ページの新着記事数を増やしたからと言って、サイドバーの新着記事表示数が増えるわけではありませんが、プラグインなどを使用せずに実装されているので、改造も簡単です。
また、ホーム画面がどうか判定を行っているので、シングル記事表示画面の時のみ新着記事リストの表示を行っています。
WordPress Codexの説明がおもしろいWP_Query()
この関数は記事を取得するためにいろいろなところで使われる関数のようで、「使う時々にパラメータをセットする」というよりは、プロパティでシステム全体の状態して値をセットしておき、実行される関数という位置づけのようです。
関数リファレンス/WP Query – WordPress Codex 日本語版
上記を読むと「プロパティを直接書き換えるべきではありません。その代わりにメソッドを使って操作することができます。」という記載があり、その続きに…
クラスのメンバとグローバル変数がしっちゃかめっちゃかになることを避ける便利な関数があります。
と書かれています。
「しっちゃかめっちゃか」
ですか…。
あまり理解できていないのですが、WP_Query()の動作を決めるグローバルな変数(プロパティ)として、「$~」というのが用意されており、これを深く考えずに操作してしまうと目的の処理以降も影響して「しっちゃかめっちゃか」になるという意味のようです。
これを避けるため、パラメータとして渡しましょう、ということのようです。
一時的な状態指定のためには、Arrayでパラメータ渡しするのが良さそうです。下の方に書いてあるサンプルを見るとみんなそうなっていますので、ちょっと記事を取得して、ぐらいな機能であれば、この方法が推奨されていると思われます。
WP_Query()でカテゴリを指定するには?
WP_Query()でカテゴリを指定するには、「cat」にカテゴリIDをカンマ区切りで指定すればよさそうです。
!
ということは、前回、WordPress Popular Postsでカテゴリ指定する時に参考にしたサンプルが使えそうです。
人気記事を表示中の記事にカテゴリに合わせてサイドバーに表示したいな。調査中。 2014-09-15 |
カテゴリ別新着記事一覧機能へのカスタマイズ
動作イメージ
ということで、おかげさまで簡単にできました。まずは動作イメージです。こちらが、Gush2オリジナル状態の「New エントリー」です。
続いて、シングル表示している記事のカテゴリに合わせて新着記事一覧を表示しているところのスクリーンショットです。サイドタイトルも「関連新着記事」に変更しました。キャンプ関係ネタということで、アウトドア関係の新着記事が表示されています。
もう1つ、スマートデバイス関係ネタでも試してみました。大丈夫そうですね!
ソースコード
編集するソースコードファイルは、sidebar.phpです。WordPressのテーマフォルダの中にあります。今回、WP_Query()へのパラメータを増やすだけで対応できますので、改造もシンプルです。
とは言っても、編集する前に、元のsidebar.phpはコピーして保存しておきましょう。
以下がGush2の新着記事(「NEW エントリー」)を取得する部分です。
<!--新着記事・ホーム非表示-->
<?php if(is_home()): ?>
<?php else: ?>
<div class="side_contents">
<h4>NEW エントリー</h4>
<?php
$args = array(
'posts_per_page' => 10,
);
$st_query = new WP_Query($args);
?>
これにカテゴリID情報を取得するプログラムを追加します。
<!--新着記事・ホーム非表示-->
<?php if(is_home()): ?>
<?php else: ?>
<div class="side_contents">
<h4>関連新着記事</h4>
<?php
$cat = get_the_category();
$cate_ids = $cat[0]->term_id;
for($i=1; $i<count($cat); $i++) { // 複数カテゴリに対応
$cate_ids .= "," . $cat[$i]->term_id;
}
?>
<?php
$args = array(
'posts_per_page' => 10,
'cat' => $cate_ids,
);
$st_query = new WP_Query($args);
?>
これで完了です。
今日の一言二言三言
ごちゃごちゃと 収拾付かない SiSO-LABも
少しは見やすく なったかな多分
こっそりとカテゴリの整理も着手しているですが、なかなか収拾がつきません。今後も少しでも見やすくなるよう、ちょっとずつ改善していこうと思いますので、よろしくお願いします。
シンプル&レスポンシブデザインなWordPress無料テーマ、Gushをカスタマイズ。のまとめ。
WordPressは2014/04あたりから触り始めたばかりですが、Gushというレスポンシブデザインの無料テーマを利用してカスタマイズしています。PHPプログラミングも初めてで、楽しくやっています。
Your Message